package com.example.day07;

import com.example.day05.B;

import java.util.HashSet;
import java.util.Set;

public class SetDemo {

    public static void main(String[] args) {

        Book b1=new Book(1,"红楼梦",100.0d);
        Book b2=new Book(2,"西游记",44.7d);
        Book b3=new Book(3,"三国演义",67.9d);
        Book b4=new Book(4,"水浒传",90.2d);


        System.out.println(b1.getClass());
        System.out.println(b2.getClass());
        //无序不可重复
        Set<Book> books=new HashSet<>();

        //原理:
        //1. 将一个对象加入到容器之前,先去调用该对象的hashCode方法 -> 得到哈希值
        //2. 如果这个哈希值曾经木有出现过,说明容器中的这块地址没有被其他对象占用,就可以直接放入
        //3. 如果这个哈希值曾经出现过 - 产生了哈希碰撞(哈希冲突),此时还不能说明哈希冲突的俩个对象是同一个对象
        //4. 继续调用equals方法.如果返回true,才说明是同一个对象,则拒绝添加入到容器

        books.add(b1);
        books.add(b2);
        books.add(b3);
        books.add(b4);

        for (Book book : books) {
            System.out.println(book);
        }
    }
}
